#ifndef ESTRATEGIAALMACENAMIENTOREGISTROS_H_
#define ESTRATEGIAALMACENAMIENTOREGISTROS_H_

#include "EstrategiaAlmacenamiento.h"

namespace Toolkit {

class EstrategiaAlmacenamientoRegistros: public EstrategiaAlmacenamiento {
public:
	EstrategiaAlmacenamientoRegistros(const unsigned long int &tamanoBloque,
			const TipoSerializacion &tSerializacion = BINARIO);
	virtual ~EstrategiaAlmacenamientoRegistros();

	virtual unsigned long int guardarDato(Almacenamiento &almacenamiento,
			const Dato &dato, const Clave &clave, WrapperComponente &wrapper);

	virtual unsigned long int modificarDato(Almacenamiento &almacenamiento,
			const Dato &dato, const Clave &clave,
			const unsigned long int posicion, WrapperComponente &wrapper);

	virtual bool recuperarDato(Almacenamiento &almacenamiento,
			const unsigned long int posicion, Dato &dato, const Clave &clave,
			WrapperComponente &wrapper);

	virtual void eliminarDato(Almacenamiento &almacenamiento,
			const long unsigned int posicion, Dato &dato, const Clave &clave,
			WrapperComponente &wrapper);

	virtual void recuperarComponente(Almacenamiento &almacenamiento,
			const unsigned long int &posicion, WrapperComponente &wrapper);

	virtual void guardarComponente(Almacenamiento &almacenamiento,
			const unsigned long int &posicion, WrapperComponente &wrapper);

	virtual unsigned long int guardarComponente(Almacenamiento &almacenamiento,
			WrapperComponente &wrapper);

	virtual void eliminarComponente(Almacenamiento &almacenamiento, const unsigned long int &posicion,
	    		WrapperComponente &wrapper);

protected:
	TipoSerializacion tSerializacion;

};

}

#endif /* ESTRATEGIAALMACENAMIENTOREGISTROS_H_ */
